Traditional JDBC এবং Spring JDBC এর মধ্যে পার্থক্য

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এর পরিচিতি |
100
100

Traditional JDBC এবং Spring JDBC-এর মধ্যে মূল পার্থক্যগুলো হলো Traditional JDBC-তে প্রচুর বয়লারপ্লেট কোড লেখা প্রয়োজন, যেখানে Spring JDBC এই জটিলতাগুলো হ্রাস করে। নিচে এদের মধ্যে গুরুত্বপূর্ণ পার্থক্যগুলো উল্লেখ করা হলো:


১. বয়লারপ্লেট কোড

  • Traditional JDBC:

    • কানেকশন ওপেন করা, স্টেটমেন্ট তৈরি করা, এক্সিকিউট করা এবং শেষে কানেকশন ক্লোজ করা—এই কাজগুলো বারবার করতে হয়।
    • এক্সসেপশন হ্যান্ডলিং এর জন্য অতিরিক্ত কোড প্রয়োজন।

    উদাহরণ:

    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    
    try {
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
        String sql = "SELECT id, name FROM students WHERE id = ?";
        statement = connection.prepareStatement(sql);
        statement.setInt(1, 1);
        resultSet = statement.executeQuery();
    
        while (resultSet.next()) {
            System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name"));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            if (resultSet != null) resultSet.close();
            if (statement != null) statement.close();
            if (connection != null) connection.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
  • Spring JDBC:

    • JdbcTemplate এবং অন্যান্য utility ক্লাস ব্যবহার করে বয়লারপ্লেট কোড প্রায় পুরোপুরি এড়ানো যায়।
    • কানেকশন ম্যানেজমেন্ট, স্টেটমেন্ট ক্লোজিং ইত্যাদি স্প্রিং নিজে থেকে হ্যান্ডল করে।

    উদাহরণ:

    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    public List<Student> getStudents() {
        String sql = "SELECT id, name FROM students";
        return jdbcTemplate.query(sql, (rs, rowNum) -> {
            Student student = new Student();
            student.setId(rs.getInt("id"));
            student.setName(rs.getString("name"));
            return student;
        });
    }
    

২. এক্সসেপশন হ্যান্ডলিং

  • Traditional JDBC:

    • চেকড এক্সসেপশন (Checked Exception) ব্যবহার করে। SQLException হ্যান্ডল করতে অতিরিক্ত কোড প্রয়োজন।

    উদাহরণ:

    try {
        // Database operation
    } catch (SQLException e) {
        e.printStackTrace();
    }
    
  • Spring JDBC:

    • Spring এর DataAccessException ইন্টারফেস ব্যবহার করে। এটি চেকড এক্সসেপশনকে রানটাইম এক্সসেপশনে কনভার্ট করে, যা কোডকে আরও সহজ ও ক্লিন করে।

    উদাহরণ:

    try {
        jdbcTemplate.queryForObject("SELECT * FROM students WHERE id = ?", new Object[]{1}, Student.class);
    } catch (DataAccessException e) {
        e.printStackTrace();
    }
    

৩. কানেকশন ম্যানেজমেন্ট

  • Traditional JDBC:
    • ডেভেলপারকে নিজে থেকেই কানেকশন ম্যানেজমেন্টের কাজ করতে হয়, যেমন কানেকশন ওপেন ও ক্লোজ করা।
    • ভুল কানেকশন হ্যান্ডলিং এর কারণে Resource Leak এর সম্ভাবনা থাকে।
  • Spring JDBC:
    • Spring নিজেই কানেকশন ম্যানেজমেন্টের দায়িত্ব নেয়।
    • DataSource ব্যবহার করে কানেকশন পুলিং সহজে ইমপ্লিমেন্ট করা যায়।

৪. Utility ক্লাস এবং Template প্যাটার্ন

  • Traditional JDBC:
    • ডেভেলপারকে পুরো কাজ নিজে করতে হয়। যেমন: কোয়ারি তৈরি, প্যারামিটার সেট করা, এবং রেজাল্ট প্রসেস করা।
  • Spring JDBC:
    • JdbcTemplate এবং NamedParameterJdbcTemplate ব্যবহার করে ডাটাবেস অপারেশন সহজ করা হয়।
    • Spring এর utility ক্লাসগুলো ডেভেলপারকে কম কোড লিখে একই কাজ সম্পন্ন করতে সাহায্য করে।

৫. Readable এবং Maintainable Code

  • Traditional JDBC:
    • কোড বড় এবং জটিল হয়ে যায়। ফলে এটি পড়া এবং রক্ষণাবেক্ষণ করা কঠিন হয়।
  • Spring JDBC:
    • কোড কমপ্যাক্ট এবং সহজবোধ্য। রক্ষণাবেক্ষণ সহজ।

৬. বিল্ট-ইন ফিচার

  • Traditional JDBC:
    • কোনো বিল্ট-ইন ফিচার বা সুবিধা নেই। সবকিছু ডেভেলপারকে নিজে ইমপ্লিমেন্ট করতে হয়।
  • Spring JDBC:
    • RowMapper, ResultSetExtractor, এবং অন্যান্য abstraction দিয়ে ডাটাবেস ইন্টারঅ্যাকশন সহজ করে।
    • টেমপ্লেট-মেথড ডিজাইন প্যাটার্ন ব্যবহার করে কোড পুনরায় ব্যবহারযোগ্য করে।

উদাহরণ: Traditional JDBC বনাম Spring JDBC

Traditional JDBC:

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
PreparedStatement ps = conn.prepareStatement("SELECT id, name FROM students WHERE id = ?");
ps.setInt(1, 1);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
    System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
}
rs.close();
ps.close();
conn.close();

Spring JDBC:

String sql = "SELECT id, name FROM students WHERE id = ?";
Student student = jdbcTemplate.queryForObject(sql, new Object[]{1}, (rs, rowNum) -> {
    Student s = new Student();
    s.setId(rs.getInt("id"));
    s.setName(rs.getString("name"));
    return s;
});
System.out.println(student);

সংক্ষেপে পার্থক্য:

বৈশিষ্ট্যTraditional JDBCSpring JDBC
বয়লারপ্লেট কোডঅনেক বেশিখুবই কম
কানেকশন ম্যানেজমেন্টম্যানুয়ালSpring স্বয়ংক্রিয়ভাবে পরিচালনা করে
এক্সসেপশন হ্যান্ডলিংচেকড এক্সসেপশনরানটাইম এক্সসেপশন
কোড রিডেবিলিটিকমবেশি
ইউটিলিটি সাপোর্টনেইঅনেক বেশি
প্রোডাক্টিভিটিকমবেশি

Spring JDBC সহজ, কার্যকর এবং উৎপাদনশীল। Traditional JDBC এর তুলনায় এটি ডেভেলপারদের জন্য অনেক বেশি সুবিধাজনক।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion